![]() | CORRESPONDENCIA CURRY-HOWARD |
x es un elemento de una clase C y su tipo correspondiente es t, se cumple la propiedad:
〈( x/t ↔ x∈C )〉
x/t se lee “x es t” o “x tiene la propiedad t”
x/t indica que x es de tipo t
D={0…9} es el conjunto de todos los dígitos, y llamamos d a su tipo correspondiente, se tiene la equivalencia condicional
(〈 x/d ↔ x∈D )〉
t, eso implica la proposición t≠∅ (t está habitado o t no está vacío). En MENTAL, si un elemento x es de tipo t, se cumple x/t y ((x/t)? = α).
x tiene el predicado t, x es de tipo t. Por ejemplo,
Pepe/hombre. Pepe tiene el predicado hombre y Pepe es un tipo de hombre.
3/entero. 3 es un tipo de entero y tiene el predicado entero.
3/d. 3 es un tipo de d (dígito) y tiene el predicado d.
α, que corresponde al predicado “existe” y que sustituye a la fórmula o proposición lógica V (verdadero). El tipo nulo (o expresión nula) es θ, que corresponde al predicado “no existe” y que sustituye a la fórmula lógica F (falso). Estos tipos universales de programación son los mismos que los tipos lógicos, es decir, se unifican los tipos lógicos y los tipos de programación. Son los mismos.
f*V. La verdad es un predicado, por ejemplo, x/V o x/(0.7*V).
〈( x/A → y/B → (x→y)/(A→B) )〉.
x es de tipo A e y es de tipo B, entonces x→y es de tipo A→B. Análogamente para la conjunción y la disyunción:
〈( x/A → y/B → (x∧y)/(A∧B) )〉
〈( x/A → y/B → (x∨y)/(A∨B) )〉